// 页面栈管理工具
export const PageStackManager = {
  // 检查页面栈状态
  checkPageStack() {
    const pages = getCurrentPages();
    const stackCount = pages.length;
    console.log(`当前页面栈数量: ${stackCount}`);
    
    if (stackCount > 8) {
      console.warn('页面栈过多，建议清理');
      return false;
    }
    return true;
  },
  
  // 智能页面跳转
  smartNavigate(url, options = {}) {
    const pages = getCurrentPages();
    const stackCount = pages.length;
    
    console.log(`智能跳转 - 当前栈数量: ${stackCount}, 目标URL: ${url}`);
    
    if (stackCount > 8) {
      // 页面栈过多时，使用 redirectTo
      console.log('页面栈过多，使用 redirectTo 跳转');
      uni.redirectTo({
        url: url,
        ...options
      });
    } else {
      // 页面栈正常时，使用 navigateTo
      console.log('页面栈正常，使用 navigateTo 跳转');
      uni.navigateTo({
        url: url,
        ...options
      });
    }
  },
  
  // 清理页面栈
  clearPageStack(targetUrl = '/pages/index/index') {
    console.log('清理页面栈，跳转到:', targetUrl);
    uni.reLaunch({
      url: targetUrl
    });
  },
  
  // 获取当前页面信息
  getCurrentPageInfo() {
    const pages = getCurrentPages();
    const currentPage = pages[pages.length - 1];
    return {
      route: currentPage.route,
      options: currentPage.options,
      stackCount: pages.length
    };
  },
  
  // 安全跳转到详情页面
  navigateToDetail(url) {
    const pages = getCurrentPages();
    const stackCount = pages.length;
    
    console.log(`跳转详情页面 - 当前栈数量: ${stackCount}`);
    
    // 详情页面总是使用 redirectTo，避免页面栈累积
    uni.redirectTo({
      url: url,
      fail: (err) => {
        console.error('页面跳转失败:', err);
        if (err.errMsg && err.errMsg.includes('webview count limit exceed')) {
          // 如果还是页面栈溢出，清理后重试
          console.log('页面栈溢出，清理后重试');
          this.clearPageStack();
        }
      }
    });
  },
  
  // 智能返回功能
  smartBack() {
    const pages = getCurrentPages();
    const stackCount = pages.length;
    
    console.log(`智能返回 - 当前栈数量: ${stackCount}`);
    
    if (stackCount > 1) {
      uni.navigateBack();
    } else {
      // 如果只有一页，跳转到首页
      uni.switchTab({
        url: '/pages/index/index'
      });
    }
  },
  
  // 检查是否为 TabBar 页面
  isTabBarPage(url) {
    const tabBarPages = [
      'pages/index/index',
      'pages/chaKanBaoGao/chaKanBaoGao',
      'pages/userCenter/userCenter'
    ];
    console.log('🔍 isTabBarPage 调试信息:');
    console.log('传入的URL:', url);
    console.log('TabBar页面列表:', tabBarPages);
    
    // 统一处理路径格式，去掉前导斜杠进行比较
    const normalizedUrl = url.replace(/^\//, '');
    const result = tabBarPages.includes(normalizedUrl);
    console.log('标准化后的URL:', normalizedUrl);
    console.log('判断结果:', result);
    return result;
  },
  
  // 智能跳转（考虑 TabBar）
  smartNavigateWithTabBar(url, options = {}) {
    const pages = getCurrentPages();
    const stackCount = pages.length;
    
    console.log(`🚀 智能跳转（TabBar版）调试信息:`);
    console.log(`当前栈数量: ${stackCount}, 目标URL: ${url}`);
    
    const isTabBar = this.isTabBarPage(url);
    console.log(`是否为TabBar页面: ${isTabBar}`);
    
    if (isTabBar) {
      // TabBar 页面使用 switchTab
      console.log('✅ 使用 switchTab 跳转');
      uni.switchTab({
        url: url,
        ...options
      });
    } else if (stackCount > 8) {
      // 非 TabBar 页面且栈过多时，使用 redirectTo
      console.log('⚠️ 页面栈过多，使用 redirectTo 跳转');
      uni.redirectTo({
        url: url,
        ...options
      });
    } else {
      // 页面栈正常时，使用 navigateTo
      console.log('📱 页面栈正常，使用 navigateTo 跳转');
      uni.navigateTo({
        url: url,
        ...options
      });
    }
  }
};
